/**************************************************************************************
 *                    .::::.
 *                  .::::::::.
 *                 ::::::::::: 
 *             ..:::::::::::'
 *           '::::::::::::'
 *             .::::::::::
 *        '::::::::::::::..
 *             ..::::::::::::.
 *           ``::::::::::::::::  在人间，有谁活着不像是一场炼狱 
 *            ::::``:::::::::'        .:::.
 *           ::::'   ':::::'       .::::::::.
 *         .::::'      ::::     .:::::::'::::.
 *        .:::'       :::::  .:::::::::' ':::::.
 *       .::'        :::::.:::::::::'      ':::::.
 *      .::'         ::::::::::::::'         ``::::.
 *  ...:::           ::::::::::::'              ``::.
 * ```` ':.          ':::::::::'                  ::::..
 *                    '.:::::'                    ':'````..
 * ----------------- 场景管理类
 * ----------------  yaohuitao@100tal.com
 * ----------------- 20180904
 * ヽ｀、ヽ｀｀、ヽ｀ヽ｀、、ヽ ｀ヽ 、ヽ｀🌙｀ヽヽ｀ヽ、ヽ｀ヽ｀、ヽ｀｀、ヽ 
 * 、｀｀、 ｀、ヽ｀ 、、ヽ｀｀、ヽ、｀｀、、ヽ｀｀、 、ヽヽ｀、｀、、ヽヽ、｀｀
 * 、 、 ヽ｀、ヽ｀｀、ヽ｀ヽ｀、、ヽ ｀ヽ 、ヽ｀｀ヽ、💃｀ヽ🏃、、🚶｀🚶🚶ヽ｀、
***************************************************************************************/

class SceneManager extends  egret.DisplayObjectContainer {
    private _stage:egret.DisplayObjectContainer // 设置所有场景所在的舞台(根)
    constructor() {
        super();
    }
    // /**
    //  * 设置根场景
    //  */
    public setStage(s:egret.DisplayObjectContainer) {
        this._stage = s;
    }
    /**
     * 获取实例
     */
    static sceneManager:SceneManager
    static get instance(){
        if(!this.sceneManager) {
            this.sceneManager =  new SceneManager()
        } 
        return this.sceneManager
    }

    //加载页面提示
    static loadTipArr={
        "map":[
            "每日签到可以免费抽奖一次哦~",
            "反馈意见如被采纳会有礼品哦~",
            '幸运抽奖五连抽更划算哦~'
        ],
        "home":[
        ]
    }

    //加载指定场景资源组
    private static async loadResource(resName){
        const loadingView = new LoadingUI(this.loadTipArr[resName]);
        this.instance._stage.addChild(loadingView);

        let isRequire = false;
        try{
            let res = RES.getGroupByName(resName);
            if(res.length){
                 isRequire = true;
            }
        }catch(e){
            console.log("没有资源组")
        }
        if(isRequire){
            await RES.loadGroup(resName, 0, loadingView);
        }
        loadingView.removeLoading();
    }

    /**
     * 根据名字去指定场景
     * @param scene 场景名 map/home/shop/
     */
    public static async goSceneByName(scenename){
        egret.Tween.removeAllTweens();
        this.instance._stage.removeChildren();
        await this.loadResource(scenename);
        switch (scenename)
        {
            case "map":
                this.instance._stage.addChild(new Map());
                break;
            case "home":
                this.instance._stage.addChild(new Home());
                break;
            default :
                this.instance._stage.addChild(new Map());
        }
    }   

}